import pandas as pd
import matplotlib.pyplot as plt

#matplotlib显示中文字体和负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = pd.read_csv('./结果文件/董宇辉/董宇辉1.csv')

# 将发布时间字段转换为 datetime 类型
data['发布时间'] = pd.to_datetime(data['发布时间'])

# 提取小时
data['hour'] = data['发布时间'].dt.hour

# 按 hour 分组并计算 sentiment_score 的平均值
hourly_avg = data.groupby('hour')['sentiment_score'].mean().reset_index()

# 绘制折线图
plt.figure(figsize=(12, 6))
plt.plot(hourly_avg['hour'], hourly_avg['sentiment_score'], marker='o')
plt.title('按小时统计的 sentiment_score 平均值')
plt.xlabel('小时')
plt.ylabel('sentiment_score 平均值')
plt.xticks(range(24))
plt.grid(True)
plt.show()

# 按 IP_location 分组并计算 sentiment_score 的平均值
location_avg = data.groupby('IP_location')['sentiment_score'].mean().reset_index()

# 绘制柱形图
plt.figure(figsize=(12, 6))
plt.bar(location_avg['IP_location'], location_avg['sentiment_score'])
plt.title('按地点统计的 sentiment_score 平均值')
plt.xlabel('地点')
plt.ylabel('sentiment_score 平均值')
plt.xticks(rotation=45)
plt.show()

# 按 gender 分组并计算 sentiment_score 的平均值
gender_avg = data.groupby('gender')['sentiment_score'].mean().reset_index()

# 绘制柱形图
plt.figure(figsize=(6, 6))
plt.bar(gender_avg['gender'], gender_avg['sentiment_score'])
plt.title('按性别统计的 sentiment_score 平均值')
plt.xlabel('性别')
plt.ylabel('sentiment_score 平均值')
plt.xticks(rotation=0)
plt.show()
